คำว่า case การแสดงออกของคำว่า 'case' เป็นหัวใจสำคัญของการควบคุมการไหลในเอลิกซีร์ แตกต่างจากคำสั่งแบบบังคับทั่วไป เช่น คำสั่ง 'switch' case เป็นการแสดงผลเชิงฟังก์ชันที่ส่งกลับผลลัพธ์ของสาขาที่ตรงกัน ทำให้นักพัฒนาสามารถแยกโครงสร้างข้อมูลซับซ้อน เช่น แผนที่ (maps) และคู่ (tuples) ได้ทันที โดยยังคงรักษาตรรกะที่ครอบคลุมทุกกรณีไว้
1. การจับคู่รูปแบบและการผูกตัวแปร
คำว่า case การแสดงออกช่วยให้คุณทดสอบค่าหนึ่งกับชุดรูปแบบต่างๆ มันจะดำเนินการโค้ดที่เกี่ยวข้องกับ รูปแบบแรกที่ตรงกัน และส่งคืนค่าของโค้ดนั้น คุณสามารถผูกตัวแปรภายในรูปแบบเพื่อนำไปใช้ทันทีในตรรกะของสาขาได้
case dave do
%{state: some_state} = person ->
IO.puts "#{person.name} อาศัยอยู่ที่ #{some_state}"
end
%{state: some_state} = person ->
IO.puts "#{person.name} อาศัยอยู่ที่ #{some_state}"
end
2. ลำดับตรรกะเชิงภาพ
3. ข้อจำกัดและตรรกะที่ครอบคลุมทุกกรณี
โดยใช้คำว่า when คำสำคัญ คุณสามารถเสริมการจับคู่โครงสร้างด้วยตรรกะเชิงเงื่อนไข (เช่น is_number(age) และ age >= 21) เอลิกซีร์ต้องการให้มีการจับคู่สำหรับทุกค่าที่เป็นไปได้ หากไม่มีรูปแบบใดตรงเลย จะเกิด CaseClauseError ขึ้น
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>